package com.thread.threadfirst.studyThread1;

import java.util.concurrent.TimeUnit;

/**
 * 10、volatile
 * 当主内存中的数据有了变动后，通知其他线程他们的缓冲区数据已过期 需要重新读取主内存的最新数据
 * volatile 保证了线程之间数据的可见性
 */
public class T2 {
    /*volatile*/ boolean running = true;

    void m() {
        System.out.println("m start");
        while (running) {
//            System.out.println("d");
//            try {
//                TimeUnit.SECONDS.sleep(1);
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
        }
        System.out.println("m end");
    }

    public static void main(String[] args) {
        T2 t2 = new T2();
        //第一种写法
        new Thread(t2::m, "t1").start();
        //第二种写法
//        new Thread(){
//            public void run(){
//                t2.m();
//            }
//
//        }.start();

        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        t2.running = false;
    }
}
